package com.tmsps.ne4weixin.api;

import java.util.HashMap;
import java.util.Map;

import com.alibaba.fastjson2.JSONObject;
import com.tmsps.ne4weixin.bean.BaseResultBean;
import com.tmsps.ne4weixin.bean.media.MaterialCount;
import com.tmsps.ne4weixin.config.WxConfig;
import com.tmsps.ne4weixin.config.enumeration.MediaTypeEnum;
import com.tmsps.ne4weixin.utils.WXHttpUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * @Title: MediaAPI.java
 * @Package: com.tmsps.ne4weixin.api
 * @Description: 素材管理API
 */
@Slf4j
public class MediaAPI extends BaseAPI {
	private String accessToken = null;
	
	public MediaAPI(WxConfig config) {
		super(config);
		this.accessToken = config.getAccessToken();
	}
	
	public MediaAPI(String accessToken) {
		super(null);
		this.accessToken = accessToken;
	}
	
	/**
	 * 获取永久素材总数
	 * @return
	 */
	public MaterialCount getMaterialCount() {
		String url = String.format(MEDIA_GET_MATERIAL_COUNT, accessToken);
		String result = WXHttpUtil.get(url);
		log.info("获取永久素材总数返回信息:{}",result);
		return JSONObject.parseObject(result, MaterialCount.class);
	}
	
	/**
	 * 获取永久素材的列表
	 * @param type 		素材的类型
	 * @param count 	返回素材的数量，取值在1到20之间
	 * @return
	 */
	public String getMaterialList(MediaTypeEnum type, Integer count) {
		String url = String.format(MEDIA_BATCHGET_MATERIAL, accessToken);
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("type", type.toName());
		paramMap.put("offset", 0);
		paramMap.put("count", count);
		return WXHttpUtil.postJson(url, JSONObject.toJSONString(paramMap));
	}
	
	/**
	 * 获取永久素材的列表
	 * @param type 		素材的类型
	 * @param offset 	从全部素材的该偏移位置开始返回，0表示从第一个素材 返回
	 * @param count 	返回素材的数量，取值在1到20之间
	 * @return 
	 */
	public String getMaterialList(MediaTypeEnum type, Integer offset, Integer count) {
		String url = String.format(MEDIA_BATCHGET_MATERIAL, accessToken);
		Map<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("type", type.toName());
		paramMap.put("offset", offset);
		paramMap.put("count", count);
		return WXHttpUtil.postJson(url, JSONObject.toJSONString(paramMap));
	}

	/**
	 * 删除不再需要的永久素材
	 * @param mediaId
	 * @return
	 */
	public BaseResultBean deleteMaterial(String mediaId) {
		String url = String.format(MEDIA_DEL_MATERIAL, accessToken);
		Map<String, Object> paramMap = new HashMap<String, Object>();
		String result = WXHttpUtil.post(url, paramMap);
		log.info("删除不再需要的永久素材返回信息:{}",result);
		return JSONObject.parseObject(WXHttpUtil.post(url, paramMap), BaseResultBean.class);
	}
}
